package lanqiaobei2017;

public class _04纸牌三角形 {
    /**
     * A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形（A按1计算）。要求每个边的和相等。
     * 下图就是一种排法
     *     A
     *    9 6
     *   4   8
     *  3 7 5 2
     *  这样的排法可能会有很多。
     * 如果考虑旋转、镜像后相同的算同一种，一共有多少种不同的排法呢？
     * 请你计算并提交该数字。
     * 注意：需要提交的是一个整数，不要提交任何多余内容。
     */
    static int ans = 0;
    public static void main(String[] args) {
        int[] a = {1,2,3,4,5,6,7,8,9};
        f(a,0);
        System.out.println(ans/2/3);
    }

    private static void f(int[] a, int k) {
        if (k == 9){
            if (a[0]+a[1]+a[2]+a[3] == a[3]+a[4]+a[5]+a[6] && a[3]+a[4]+a[5]+a[6] == a[6]+a[7]+a[8]+a[0]){
                ans ++ ;
            }
        }
        for (int i = k ; i < 9; i++){
            int temp = a[k];
            a[k] = a[i];
            a[i] = temp;

            f(a,k+1);

            temp = a[k];
            a[k] = a[i];
            a[i] = temp;
        }
    }
}
